#!/usr/bin/env bash
#-------------------------------------------------------
#	FileName	: mana.sh
#	Author		：hpy
#	Date		：2024年06月05日
#	Description	：精奥矩阵FTIR研发分析脚本
#-------------------------------------------------------

version="1.0.0"

#-----------------------------------------
#函数名：ReadIni 
#功能：读取ini文件，读取成功返回状态码0，否则
#返回状态码1
#@param1：ini文件路径
#@param2：Section
#@param3：Option
#例如：ReadIni test.ini s2 Path 
#-----------------------------------------
function ReadIni(){
    fid=$1
    section=$2
    option=$3

    test ! -f $fid && echo "不存在文件$fid" && return 2
    if [ $# -eq 3 ] ; then
        local src=$(cat $fid | awk '/\['$section'\]/{f=1;next} /\[*\]/{f=0} f' |  #找出section下的所有内容
        grep $option | # 匹配option的行 
        grep '='     | # 看看是不是存在=
        cut -d'=' -f2| # 获取对应的值
        cut -d'#' -f1| # 去除注释
        cut -d';' -f1| #去除注释
        awk '{gsub(/^\s+|\s+$/, "");print}') #去掉最前面的空格
        echo $src
        test ${#src} -eq 0 && return 2 || return 0  #读取到有效数据 返回状态码0
    else
        return 2
    fi 
}


# SRC_DIR="TestData/高配-自己的分束器"  # 数据文件所在文件夹
# MON_FILE="TestData/高配-自己的分束器/state/state.txt" # 监控数据文件路径
SRC_DIR=$(ReadIni config.ini mana SRC_DIR)   # 数据文件所在文件夹
MON_FILE=$(ReadIni config.ini mana MON_FILE) # 监控数据文件路径
DST_DIR=$(ReadIni config.ini mana src)       # 监控数据文件路径



# SRC_DIR="TestData/temp"  # 数据文件所在文件夹
# MON_FILE="TestData/temp/state/state.txt" # 监控数据文件路径
# DST_DIR="src"    # 筛选结果拷贝到的文件夹

function main(){

    #预处理命令
    if [ $# -gt 0 ] ; then 
        cmd=$1
        str=""  #读取除开命令的其他参数
        idx=0
        for i in $*
        do 
            test ! $idx -eq 0 && str="$str $i"
            idx=$((idx+1))
        done 
    fi 

    fg 
    echo "数据源路径   : $SRC_DIR"
    echo "监控文件路径 : $MON_FILE"
    echo "输出文件路径 : $DST_DIR"
    fg

    case $cmd in 
        "temp"|"t"  )   f-temp   $str ;;  #分析温度的影响
        "number"|"n")   f-num    $str ;;
        "watch"|"w")    f-watch  $str ;;  # 绘制制定序号的数据
        *) mhelp ;; #帮助
    esac 
}


#-------------------------------------------------------
# 构建指定温度范围内的数据
# 参数1:温度小值
# 参数2:温度大值
#-------------------------------------------------------
function f-watch() {
    bash ./script/watch.sh $*
}

#-------------------------------------------------------
# 构建指定温度范围内的数据
# 参数1:温度小值
# 参数2:温度大值
#-------------------------------------------------------
function f-temp() {
    echo "筛选干涉仪温度在 $1 ~ $2 之间的数据 ... [ok]"
    test ! -d $DST_DIR && mkdir -p $DST_DIR && echo "不存在 $DST_DIR 文件夹,新建$DST_DIR 文件夹 ... [ok]"
    rm -rf $DST_DIR/*.txt 
    echo "清理src下的 .txt 文件 ... [ok]"
    local src_list=$(cat $MON_FILE |  awk -v TMIN=$1 -v TMAX=$2 '{
        if( $0 ~ /^\[.*/ ) {
            value=$4
        }
        else {
            value=$2
        }

        if(value>=TMIN && value <= TMAX ) {
            # printf("%g\n",$2)
            printf("%d\n",NR)
        }
    }')

    for i in $src_list
    do 
        test -f $SRC_DIR/$i.txt && cp $SRC_DIR/$i.txt $DST_DIR/ 
        # && echo "copy $SRC_DIR/$i.txt to  $DST_DIR ... [ok]"
    done 
    
    echo "已将筛选出的数据拷贝到 $DST_DIR 文件夹 ... [ok]"
}

#-------------------------------------------------------
# 构建数据文件在指定序号之间的数据
# 参数1:序号小值
# 参数2:序号大值
#-------------------------------------------------------
function f-num() {
    echo "筛选数据文件序号在 $1 ~ $2 之间的数据 ... [ok]"
    test ! -d $DST_DIR && mkdir -p $DST_DIR && echo "不存在 $DST_DIR 文件夹,新建$DST_DIR 文件夹 ... [ok]"
    rm -rf $DST_DIR/*.txt 
    echo "清理src下的 .txt 文件 ... [ok]"
    total=$(ls $SRC_DIR/*.txt | wc -l)
    for i in $(ls $SRC_DIR/*.txt) 
    do 
        f=$(basename $i)
        idx=${f%%.*}
        if [ $idx -ge $1 ] && [ $idx -le $2 ]  ; then 
            cp $i $DST_DIR/ && echo "copy $i  to $DST_DIR/  ... [ok]"
        fi 
        
    done 

    echo "已将文件序号在 $1 ~ $2 之间的数据筛选出并拷贝到 $DST_DIR 文件夹 ... [ok]"
}


#-------------------------------------------------------
# 终端分割线
#-------------------------------------------------------
function fg() {
    shellwidth=`stty size|awk '{print $2}'`
    yes "-" 2>/dev/null | sed $shellwidth'q' | tr -d '\n'
}



#---------------------------------------
#显示帮助
#---------------------------------------
function mhelp() {
    echo " $(basename $0) version:$version ,分析采集数据的脚本工具!"
    echo "    $(basename $0) temp|t    tmin tmax            筛选干涉仪温度在指定范围内的谱线"
    echo "    $(basename $0) number|n  min  max             筛选采集序号在min~max之间的谱线"
    echo "    $(basename $0) watch|w  start end delayms     绘制指定序号范围的数据"
    echo "    $(basename $0) help                           显示帮助"

    echo 
}


main $* 




